/**********************************************************************
 Copyright (C) 2009 Jaakko Vuori

 This file is part of FlexiWorker.
 For more information, see <http://code.google.com/p/flexi-worker/>

 FlexiWorker is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 FlexiWorker is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with FlexiWorker.  If not, see <http://www.gnu.org/licenses/>.
 **********************************************************************/

#ifndef FLEXIDAEMON_H
#define FLEXIDAEMON_H

#include <QObject>
#include <QDateTime>
#include <QSystemTrayIcon>

class QSystemTrayIcon;
class QMenu;
class IdleMonitor;

class FlexiDaemon : public QObject
{
    Q_OBJECT
public:
    FlexiDaemon(QObject* parent = 0);
    ~FlexiDaemon();

private Q_SLOTS:
    void onIdle(QDateTime lastActivityTime);
    void onBack();
    void iconActivated(QSystemTrayIcon::ActivationReason reason);
    void editLog();
    void viewLog();

private:
    enum Event
    {
        Start,
        End,
        Idle,
        Back
    };
    void saveEvent(Event event, QDateTime dateTime);
    QString logFileName() const;

private:
    QSystemTrayIcon* m_trayIcon;
    QMenu* m_trayIconMenu;
    IdleMonitor* m_idleMonitor;
};

#endif // FLEXIDAEMON_H
